<template>
  <div>
    <div ref="map" class="map" />
  </div>
</template>

<script>
import axios from 'axios'
export default {
  name: 'Map',
  mounted() {
    this.initMap()
  },
  methods: {
    async initMap() {
      const ret = await axios.get('http://192.168.31.40:3002/static/map/china.json')
      console.log(ret)
      const airData = [
        { name: '北京', value: 39.92 },
        { name: '天津', value: 39.13 },
        { name: '上海', value: 31.22 },
        { name: '重庆', value: 66 },
        { name: '河北', value: 147 },
        { name: '河南', value: 113 },
        { name: '云南', value: 25.04 },
        { name: '辽宁', value: 50 },
        { name: '黑龙江', value: 114 },
        { name: '湖南', value: 175 },
        { name: '安徽', value: 117 },
        { name: '山东', value: 92 },
        { name: '新疆', value: 84 },
        { name: '江苏', value: 67 },
        { name: '浙江', value: 84 },
        { name: '江西', value: 96 },
        { name: '湖北', value: 273 },
        { name: '广西', value: 59 },
        { name: '甘肃', value: 99 },
        { name: '山西', value: 39 },
        { name: '内蒙古', value: 58 },
        { name: '陕西', value: 61 },
        { name: '吉林', value: 51 },
        { name: '福建', value: 29 },
        { name: '贵州', value: 71 },
        { name: '广东', value: 38 },
        { name: '青海', value: 57 },
        { name: '西藏', value: 24 },
        { name: '四川', value: 58 },
        { name: '宁夏', value: 52 },
        { name: '海南', value: 54 },
        { name: '台湾', value: 88 },
        { name: '香港', value: 66 },
        { name: '澳门', value: 77 },
        { name: '南海诸岛', value: 55 }
      ]
      const scatterData = [
        {
          value: [117.283042, 31.86119] // 散点的坐标, 使用的是经纬度
        },
        {
          value: [121.509062, 25.044332] // 散点的坐标, 使用的是经纬度
        }
      ]
      const map = this.$eCharts.init(this.$refs.map)
      this.$eCharts.registerMap('chinaMap', ret.data)
      const option = {
        geo: {
          type: 'map',
          map: 'chinaMap',
          roam: true,
          label: {
            show: true
          }
        },
        visualMap: {
          min: 0, // 最小值
          max: 300, // 最大值
          inRange: {
            color: ['white', 'red'] // 颜色的范围
          },
          calculable: true // 是否显示拖拽用的手柄（手柄能拖拽调整选中范围）
        },
        series: [
          {
            data: airData,
            geoIndex: 0,
            type: 'map'
          },
          {
            data: scatterData, // 配置散点的坐标数据
            type: 'effectScatter',
            coordinateSystem: 'geo', // 指明散点使用的坐标系统  geo的坐标系统
            rippleEffect: {
              scale: 10 // 设置涟漪动画的缩放比例
            }
          }]
      }
      map.setOption(option)
      window.addEventListener('resize', (e) => {
        console.log(e)
        map.resize()
      })
    }
  }
}
</script>
<style lang="less" scoped>
.map{
  width: 100%;
  height: 100vh;
}
</style>
